#pragma once
#include "mlogger.hpp"

/* 
 * mlogger使用: PROTOCOL模块日志 
 * 使用说明: 将如下PROTOCOL包含的字符，替换为本模块的缩写字符名即可
 * 日志级别: level::logger_level::trace
            level::logger_level::debug
            level::logger_level::info
            level::logger_level::warn
            level::logger_level::err
            level::logger_level::critical
 */
DECLARE_MODULE_LOGGER(PROTOCOL);
#define PROTOCOL_LOG_NAMESTR                        "PROTOCOL"
/*模块日志初始化，统一采用日志对象blogger(外部输入) */
#define PROTOCOL_LOG_INIT(bLogger)                  LOGGER_INIT(PROTOCOL,PROTOCOL_LOG_NAMESTR, bLogger);                       
/*模块日志动态级别设置, 参考级别如上*/
#define PROTOCOL_LOG_SETLEVEL(logLevel,isTraceFunc) LOGGER_SET_LEVEL(PROTOCOL,PROTOCOL_LOG_NAMESTR,logLevel,isTraceFunc);

/* 获取配置级别 */
#define PROTOCOL_LOG_GETLEVEL(logLevel, isTraceFunc) \
do { \
    logLevel = mLogger_##PROTOCOL::GetInstance().m_module_level_;\
    isTraceFunc = mLogger_##PROTOCOL::GetInstance().m_module_is_tfunc_;\
} while(0);

#define LOG_TRACE(...)                     LOGGER_TRACE(PROTOCOL, __VA_ARGS__ );
#define LOG_DEBUG(...)                     LOGGER_DEBUG(PROTOCOL, __VA_ARGS__ );
#define LOG_INFO(...)                      LOGGER_INFO(PROTOCOL, __VA_ARGS__ );
#define LOG_WARN(...)                      LOGGER_WARN(PROTOCOL, __VA_ARGS__ );
#define LOG_ERROR(...)                     LOGGER_ERR(PROTOCOL, __VA_ARGS__ );
#define LOG_CRITICAL(...)                  LOGGER_CRITICAL(PROTOCOL, __VA_ARGS__);
